import wxrequest from 'mina-request'
// import wxrequest from './request'
import { getStorage, clearStorage } from './storage'
import { Model, toast } from './extendApi'
import { env } from './env'
//测试实例化
const instance = new wxrequest({
  baseURL: env.baseURL,
  timeout: '60000',
  isLoading: false //不使用默认loading
})

//配置请求拦截器
instance.interceptors.request = (config) => {
  //在发送请求之前,应该判断是否存在token
  //如果存在token,则需要在请求头中添加token字段
  const token = getStorage('token')
  if (token) {
    config.header['token'] = token
  }
  return config
}

//配置响应拦截器
instance.interceptors.response = async (response) => {
  // console.log(response)
  const { isSuccess, data } = response
  //如果isSuccess 为false  说明执行fail函数
  //说明此时网络异常
  if (!isSuccess) {
    wx.showToast({
      title: '网络异常请重试',
      icon: 'error'
    })
    //返回数据
    return response
  }
  //判断服务器状态码
  switch (data.code) {
    //如果后端返回业务状态码等于200 说明请求成功 说明成功返回数据
    case 200:
      return data

    //如果服务器返回数据 是208 说明没有token 需要重新登录
    //让用户重新登录
    case 208:
      const res = await Model({
        content: '鉴权失败,请重新登录',
        showCancel: false //不显示取消按钮
      })
      if (res) {
        //既然token失效了 先移除token
        clearStorage()
        //重新登录
        wx.navigateTo({
          url: '/pages/login/login'
        })
      }
      return Promise.reject(response)

    default:
      toast({
        title: '程序出现异常,请联系客服或者稍后重试'
      })
      return Promise.reject(response)
  }

  //返回服务器数据
  return data
}

export default instance
